2023/12/232885字符

正则

转义字符

  • \n :换行
  • \t :相当于Tab键
  • \r :回车
  • \f :“♀”字符
  • ' :单引号
  • " :双引号
  • \ :“\”
  • \b :退格
  • \f :换页
  • & :和号
document.body.innerHTML = "\
    <san></span>\
    <em></em>\
";  // 防止报错

RegExp 正则表达式

var reg = /abce/;
var str = "abcde";
console.log(reg.test(str));  //--> false

var reg = new RegExp("abc", "i");  // 另一种创建方法
var str = "abcd";
console.log(reg.test(str));  //--> true

忽视大小写

var reg = /abc/i;
var str = "ABc";
console.log(reg.test(str));  //--> true

全局匹配

var reg = /a/g;
var str = "abcab";
console.log(str.match(reg));  //--> ['a', 'a']

多行匹配

var reg = /^a/m;  // ^ 开头字符
var str = "abc\nab";
console.log(str.match(reg));  //--> ['a', 'a']

表达式

var reg = /[0-9][a-z]/;  // 每个 [] 代表一位
var str = "a1b";
console.log(str.match(reg));  //--> 1b

var reg = /[^a][^b]/;  // 写在 [] 里的 ^ 表示:除了
var str = "asvadshu";
console.log(str.match(reg));  //--> sv

var reg = /(abc|bcd)/;  // | 或
var str = "bcd";
console.log(str.match(reg));  //--> bcd

元字符

  • \w === [0-9A-z_] 键盘字符
  • \W === [^\w]
  • \d === [0-9] 数字
  • \D === [^\d]
  • \s === [\t\n\f\r\v ] 空白字符
  • \S === [^\s]
  • \b 单词边界
  • \B 非单词边界
  • \u0000 unicode 编码
  • . === [^\n\r] 查找单个字符,除了换行和行结束符

量词(贪婪匹配原则)

  • n+ 1-Infinity
  • n+? (非贪婪匹配)
  • n* 0-Infinity
  • n? 0-1
  • n{4,3}
  • n{1,}
  • ^n$ 以 n 开头,以 n 结尾

检验一个字符串首尾是否含有数字

var reg = /^\d|\d$/;
var str = "123abc";

reg.test(str);  // 返回 boolen 值
reg.exec(str);
reg.lastIndex(2);  // 全局匹配情况下,游标放到第2位

var reg = /(\w)\1/g;  // 反向引用 \w 一模一样的字符
var reg = /(\w)\1(w)\2/g;
    str = "aabb";

var reg = /\w/g;
var str = "aa";
console.log(str.replace(reg, "b"));  //--> bb  如果不加全局匹配,只会替换一个字符

var reg = /(\w)\1(\w)\2/g;
var str = "aabb";
console.log(str.replace(reg, "$2$2$1$1"));

var reg = /-(\w)/g;
var str = "the-frist-name";
console.log(str.replace(reg, function($, $1){
    return $1.toUpperCase();  //--> theFristName
}));

?=b ?!b

var str = "abaaaaa";
var reg = /a(?=b)/g;  // 正向预查
console.log(str.match(reg));  //--> a

var str = "aaaaaaabbbbbbbbbccccccc";
var reg = /(\w)\1*/g;
console.log(str.replace(reg, "$1"));  //--> abc

银行计数

var str = "10000000000";
var reg = /(?=(\B)(\d{3})+$)/g;
console.log(str.replace(reg, ","));  //--> 10,000,000,000